// 发送ajax 请求
import axios from 'axios';
import QS from 'qs';

// 以定义变量的方式完成地址的统一管理
const urls = {
    films:"/filmApi/loadFilms.php",
    types:"/filmApi/loadTyps.php",
    detail:"/filmApi/loadFilmById.php",
    findComment:"/filmApi/loadComments.php",
    addComment:"/filmApi/addComment.php"
}
const baseURLS = {
    production:"http://127.0.0.1:80",
    development:"/api"
}

// 地址 http:// https://,以协议开头的请求是不受下属配置影响的

// 全局前缀的配置，一定要注意，在项目地址都是针对相同的服务器的
// axios.defaults.baseURL = process.env.NODE_ENV === 'production'?"http://127.0.0.1:80":"/api";
axios.defaults.baseURL = baseURLS[process.env.NODE_ENV];

const errorFun = function(error){
    console.log("---------->请求失败：",error);//  开发者查看
    window.$showTip("网络链接失败，请稍后再试");
}

const responseFun = function(response){
    if(response.statusText!="OK"){
        return Promise.reject(new Error("服务出现故障"));
    }
    if(!response.data.resultState){
        return Promise.reject(new Error(response.data.msg));
    }
    return response.data.result;
}

const loadFilms = function(params){
    return axios.get(urls.films,{
        params:params
    }).then(responseFun);
}

const loadTypes = function(){
    return axios.get(urls.types)
    .then(responseFun)
}

const loadFilmById = function(params){
    return axios.post(urls.detail,QS.stringify(params))
    .then(responseFun)
}

const findComment = function(params) {
    return axios.post(urls.findComment,QS.stringify(params))
    .then(responseFun);
}

const addComment = function(params){
    return axios.post(urls.addComment,QS.stringify(params))
    .then((response)=>{
        if(response.statusText!="OK"){
            return Promise.reject(new Error("服务出现故障"));
        }
        if(!response.data.resultState){
            return Promise.reject(new Error(response.data.msg));
        }
        return response.data.msg;
    });
}

export default {
    install(Vue){
        Vue.prototype.$api = {
            loadFilms,loadTypes,loadFilmById,findComment,addComment
        }
        Vue.prototype.$error = errorFun;
    }
}